home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mac Magazin/MacEasy 19
/
Mac Magazin and MacEasy Magazine CD - Issue 19.iso
/
Utilities
/
uae-0.4
/
Source Code
/
CPU Sources
/
cpuE.c
< prev
next >
Wrap
C/C++ Source or Header
|
1996-02-13
|
117KB
|
5,129 lines
#include "config.h"
#include "amiga.h"
#include "options.h"
#include <stdlib.h>
#include "memory.h"
#include "custom.h"
#include "newcpu.h"
#include "cputbl.h"
void op_e000(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
}
regs.n = sign != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e008(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e010(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e018(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&1; val = (ULONG)val >> 1;
if(carry) val |= cmask;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e020(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
ULONG dstreg = (opcode & 7) >> 0;
{{ BYTE cnt = regs.d[srcreg];
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
}
regs.n = sign != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e028(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
ULONG dstreg = (opcode & 7) >> 0;
{{ BYTE cnt = regs.d[srcreg];
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e030(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
ULONG dstreg = (opcode & 7) >> 0;
{{ BYTE cnt = regs.d[srcreg];
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e038(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
ULONG dstreg = (opcode & 7) >> 0;
{{ BYTE cnt = regs.d[srcreg];
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&1; val = (ULONG)val >> 1;
if(carry) val |= cmask;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e040(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x8000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
}
regs.n = sign != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e048(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e050(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e058(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&1; val = (ULONG)val >> 1;
if(carry) val |= cmask;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e060(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
ULONG dstreg = (opcode & 7) >> 0;
{{ WORD cnt = regs.d[srcreg];
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x8000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
}
regs.n = sign != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e068(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
ULONG dstreg = (opcode & 7) >> 0;
{{ WORD cnt = regs.d[srcreg];
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e070(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
ULONG dstreg = (opcode & 7) >> 0;
{{ WORD cnt = regs.d[srcreg];
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e078(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
ULONG dstreg = (opcode & 7) >> 0;
{{ WORD cnt = regs.d[srcreg];
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&1; val = (ULONG)val >> 1;
if(carry) val |= cmask;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e080(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80000000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
}
regs.n = sign != 0;
regs.z = val == 0;
regs.d[dstreg] = (val);
}}}}}}
void op_e088(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e090(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e098(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&1; val = (ULONG)val >> 1;
if(carry) val |= cmask;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e0a0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
ULONG dstreg = (opcode & 7) >> 0;
{{ LONG cnt = regs.d[srcreg];
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80000000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
}
regs.n = sign != 0;
regs.z = val == 0;
regs.d[dstreg] = (val);
}}}}}}
void op_e0a8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
ULONG dstreg = (opcode & 7) >> 0;
{{ LONG cnt = regs.d[srcreg];
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e0b0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
ULONG dstreg = (opcode & 7) >> 0;
{{ LONG cnt = regs.d[srcreg];
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e0b8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
ULONG dstreg = (opcode & 7) >> 0;
{{ LONG cnt = regs.d[srcreg];
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&1; val = (ULONG)val >> 1;
if(carry) val |= cmask;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e0d0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg];
WORD data = get_word(dataa);
regs.v = 0;
{ UWORD val = data;
ULONG cmask = 0x8000;
ULONG sign = cmask & val;
regs.c=regs.x=val&1; val = (val >> 1) | sign;
regs.n = sign != 0;
regs.z = val == 0;
put_word(dataa,val);
}}}}
void op_e0d8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg];
WORD data = get_word(dataa);
{ regs.a[srcreg] += 2;
regs.v = 0;
{ UWORD val = data;
ULONG cmask = 0x8000;
ULONG sign = cmask & val;
regs.c=regs.x=val&1; val = (val >> 1) | sign;
regs.n = sign != 0;
regs.z = val == 0;
put_word(dataa,val);
}}}}}
void op_e0e0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ regs.a[srcreg] -= 2;
{ CPTR dataa = regs.a[srcreg];
WORD data = get_word(dataa);
regs.v = 0;
{ UWORD val = data;
ULONG cmask = 0x8000;
ULONG sign = cmask & val;
regs.c=regs.x=val&1; val = (val >> 1) | sign;
regs.n = sign != 0;
regs.z = val == 0;
put_word(dataa,val);
}}}}}
void op_e0e8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg] + (LONG)(WORD)nextiword();
WORD data = get_word(dataa);
regs.v = 0;
{ UWORD val = data;
ULONG cmask = 0x8000;
ULONG sign = cmask & val;
regs.c=regs.x=val&1; val = (val >> 1) | sign;
regs.n = sign != 0;
regs.z = val == 0;
put_word(dataa,val);
}}}}
void op_e0f0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg];
UWORD datadp = nextiword();
dataa += (LONG)(BYTE)(datadp & 0xFF);
{ ULONG datadpr = datadp & 0x8000 ? regs.a[(datadp & 0x7000) >> 12] : regs.d[(datadp & 0x7000) >> 12];
if (!(datadp & 0x800)) datadpr = (LONG)(WORD)datadpr;
dataa += datadpr;
{ WORD data = get_word(dataa);
regs.v = 0;
{ UWORD val = data;
ULONG cmask = 0x8000;
ULONG sign = cmask & val;
regs.c=regs.x=val&1; val = (val >> 1) | sign;
regs.n = sign != 0;
regs.z = val == 0;
put_word(dataa,val);
}}}}}}
void op_e0f8(UWORD opcode)
{
{{ CPTR dataa = (LONG)(WORD)nextiword();
WORD data = get_word(dataa);
regs.v = 0;
{ UWORD val = data;
ULONG cmask = 0x8000;
ULONG sign = cmask & val;
regs.c=regs.x=val&1; val = (val >> 1) | sign;
regs.n = sign != 0;
regs.z = val == 0;
put_word(dataa,val);
}}}}
void op_e0f9(UWORD opcode)
{
{{ CPTR dataa = nextilong();
WORD data = get_word(dataa);
regs.v = 0;
{ UWORD val = data;
ULONG cmask = 0x8000;
ULONG sign = cmask & val;
regs.c=regs.x=val&1; val = (val >> 1) | sign;
regs.n = sign != 0;
regs.z = val == 0;
put_word(dataa,val);
}}}}
void op_e100(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
}
regs.n = (val&cmask) != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e108(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e110(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e118(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(carry) val |= 1;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e120(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
ULONG dstreg = (opcode & 7) >> 0;
{{ BYTE cnt = regs.d[srcreg];
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
}
regs.n = (val&cmask) != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e128(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
ULONG dstreg = (opcode & 7) >> 0;
{{ BYTE cnt = regs.d[srcreg];
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e130(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
ULONG dstreg = (opcode & 7) >> 0;
{{ BYTE cnt = regs.d[srcreg];
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e138(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
ULONG dstreg = (opcode & 7) >> 0;
{{ BYTE cnt = regs.d[srcreg];
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(carry) val |= 1;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e140(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x8000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
}
regs.n = (val&cmask) != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e148(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e150(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e158(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(carry) val |= 1;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e160(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
ULONG dstreg = (opcode & 7) >> 0;
{{ WORD cnt = regs.d[srcreg];
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x8000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
}
regs.n = (val&cmask) != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e168(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
ULONG dstreg = (opcode & 7) >> 0;
{{ WORD cnt = regs.d[srcreg];
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e170(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
ULONG dstreg = (opcode & 7) >> 0;
{{ WORD cnt = regs.d[srcreg];
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e178(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
ULONG dstreg = (opcode & 7) >> 0;
{{ WORD cnt = regs.d[srcreg];
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(carry) val |= 1;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e180(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80000000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
}
regs.n = (val&cmask) != 0;
regs.z = val == 0;
regs.d[dstreg] = (val);
}}}}}}
void op_e188(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e190(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e198(UWORD opcode)
{
ULONG srcreg = 8;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(carry) val |= 1;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e1a0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
ULONG dstreg = (opcode & 7) >> 0;
{{ LONG cnt = regs.d[srcreg];
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80000000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
}
regs.n = (val&cmask) != 0;
regs.z = val == 0;
regs.d[dstreg] = (val);
}}}}}}
void op_e1a8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
ULONG dstreg = (opcode & 7) >> 0;
{{ LONG cnt = regs.d[srcreg];
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e1b0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
ULONG dstreg = (opcode & 7) >> 0;
{{ LONG cnt = regs.d[srcreg];
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e1b8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
ULONG dstreg = (opcode & 7) >> 0;
{{ LONG cnt = regs.d[srcreg];
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(carry) val |= 1;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e1d0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg];
WORD data = get_word(dataa);
regs.v = 0;
{ UWORD val = data;
ULONG cmask = 0x8000;
ULONG sign = cmask & val;
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
regs.n = (val&cmask) != 0;
regs.z = val == 0;
put_word(dataa,val);
}}}}
void op_e1d8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg];
WORD data = get_word(dataa);
{ regs.a[srcreg] += 2;
regs.v = 0;
{ UWORD val = data;
ULONG cmask = 0x8000;
ULONG sign = cmask & val;
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
regs.n = (val&cmask) != 0;
regs.z = val == 0;
put_word(dataa,val);
}}}}}
void op_e1e0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ regs.a[srcreg] -= 2;
{ CPTR dataa = regs.a[srcreg];
WORD data = get_word(dataa);
regs.v = 0;
{ UWORD val = data;
ULONG cmask = 0x8000;
ULONG sign = cmask & val;
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
regs.n = (val&cmask) != 0;
regs.z = val == 0;
put_word(dataa,val);
}}}}}
void op_e1e8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg] + (LONG)(WORD)nextiword();
WORD data = get_word(dataa);
regs.v = 0;
{ UWORD val = data;
ULONG cmask = 0x8000;
ULONG sign = cmask & val;
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
regs.n = (val&cmask) != 0;
regs.z = val == 0;
put_word(dataa,val);
}}}}
void op_e1f0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg];
UWORD datadp = nextiword();
dataa += (LONG)(BYTE)(datadp & 0xFF);
{ ULONG datadpr = datadp & 0x8000 ? regs.a[(datadp & 0x7000) >> 12] : regs.d[(datadp & 0x7000) >> 12];
if (!(datadp & 0x800)) datadpr = (LONG)(WORD)datadpr;
dataa += datadpr;
{ WORD data = get_word(dataa);
regs.v = 0;
{ UWORD val = data;
ULONG cmask = 0x8000;
ULONG sign = cmask & val;
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
regs.n = (val&cmask) != 0;
regs.z = val == 0;
put_word(dataa,val);
}}}}}}
void op_e1f8(UWORD opcode)
{
{{ CPTR dataa = (LONG)(WORD)nextiword();
WORD data = get_word(dataa);
regs.v = 0;
{ UWORD val = data;
ULONG cmask = 0x8000;
ULONG sign = cmask & val;
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
regs.n = (val&cmask) != 0;
regs.z = val == 0;
put_word(dataa,val);
}}}}
void op_e1f9(UWORD opcode)
{
{{ CPTR dataa = nextilong();
WORD data = get_word(dataa);
regs.v = 0;
{ UWORD val = data;
ULONG cmask = 0x8000;
ULONG sign = cmask & val;
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
regs.n = (val&cmask) != 0;
regs.z = val == 0;
put_word(dataa,val);
}}}}
void op_e200(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
}
regs.n = sign != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e208(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e210(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e218(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&1; val = (ULONG)val >> 1;
if(carry) val |= cmask;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e240(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x8000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
}
regs.n = sign != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e248(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e250(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e258(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&1; val = (ULONG)val >> 1;
if(carry) val |= cmask;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e280(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80000000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
}
regs.n = sign != 0;
regs.z = val == 0;
regs.d[dstreg] = (val);
}}}}}}
void op_e288(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e290(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e298(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&1; val = (ULONG)val >> 1;
if(carry) val |= cmask;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e2d0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg];
WORD data = get_word(dataa);
{ UWORD val = data;
int carry = val&1;
carry=val&1; val >>= 1;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
put_word(dataa,val);
}}}}
void op_e2d8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg];
WORD data = get_word(dataa);
{ regs.a[srcreg] += 2;
{ UWORD val = data;
int carry = val&1;
carry=val&1; val >>= 1;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
put_word(dataa,val);
}}}}}
void op_e2e0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ regs.a[srcreg] -= 2;
{ CPTR dataa = regs.a[srcreg];
WORD data = get_word(dataa);
{ UWORD val = data;
int carry = val&1;
carry=val&1; val >>= 1;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
put_word(dataa,val);
}}}}}
void op_e2e8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg] + (LONG)(WORD)nextiword();
WORD data = get_word(dataa);
{ UWORD val = data;
int carry = val&1;
carry=val&1; val >>= 1;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
put_word(dataa,val);
}}}}
void op_e2f0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg];
UWORD datadp = nextiword();
dataa += (LONG)(BYTE)(datadp & 0xFF);
{ ULONG datadpr = datadp & 0x8000 ? regs.a[(datadp & 0x7000) >> 12] : regs.d[(datadp & 0x7000) >> 12];
if (!(datadp & 0x800)) datadpr = (LONG)(WORD)datadpr;
dataa += datadpr;
{ WORD data = get_word(dataa);
{ UWORD val = data;
int carry = val&1;
carry=val&1; val >>= 1;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
put_word(dataa,val);
}}}}}}
void op_e2f8(UWORD opcode)
{
{{ CPTR dataa = (LONG)(WORD)nextiword();
WORD data = get_word(dataa);
{ UWORD val = data;
int carry = val&1;
carry=val&1; val >>= 1;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
put_word(dataa,val);
}}}}
void op_e2f9(UWORD opcode)
{
{{ CPTR dataa = nextilong();
WORD data = get_word(dataa);
{ UWORD val = data;
int carry = val&1;
carry=val&1; val >>= 1;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
put_word(dataa,val);
}}}}
void op_e300(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
}
regs.n = (val&cmask) != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e308(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e310(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e318(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(carry) val |= 1;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e340(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x8000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
}
regs.n = (val&cmask) != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e348(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e350(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e358(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(carry) val |= 1;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e380(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80000000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
}
regs.n = (val&cmask) != 0;
regs.z = val == 0;
regs.d[dstreg] = (val);
}}}}}}
void op_e388(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e390(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e398(UWORD opcode)
{
ULONG srcreg = 1;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(carry) val |= 1;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e3d0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg];
WORD data = get_word(dataa);
{ UWORD val = data;
ULONG cmask = 0x8000;
int carry = val&cmask;
val <<= 1;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
put_word(dataa,val);
}}}}
void op_e3d8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg];
WORD data = get_word(dataa);
{ regs.a[srcreg] += 2;
{ UWORD val = data;
ULONG cmask = 0x8000;
int carry = val&cmask;
val <<= 1;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
put_word(dataa,val);
}}}}}
void op_e3e0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ regs.a[srcreg] -= 2;
{ CPTR dataa = regs.a[srcreg];
WORD data = get_word(dataa);
{ UWORD val = data;
ULONG cmask = 0x8000;
int carry = val&cmask;
val <<= 1;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
put_word(dataa,val);
}}}}}
void op_e3e8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg] + (LONG)(WORD)nextiword();
WORD data = get_word(dataa);
{ UWORD val = data;
ULONG cmask = 0x8000;
int carry = val&cmask;
val <<= 1;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
put_word(dataa,val);
}}}}
void op_e3f0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg];
UWORD datadp = nextiword();
dataa += (LONG)(BYTE)(datadp & 0xFF);
{ ULONG datadpr = datadp & 0x8000 ? regs.a[(datadp & 0x7000) >> 12] : regs.d[(datadp & 0x7000) >> 12];
if (!(datadp & 0x800)) datadpr = (LONG)(WORD)datadpr;
dataa += datadpr;
{ WORD data = get_word(dataa);
{ UWORD val = data;
ULONG cmask = 0x8000;
int carry = val&cmask;
val <<= 1;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
put_word(dataa,val);
}}}}}}
void op_e3f8(UWORD opcode)
{
{{ CPTR dataa = (LONG)(WORD)nextiword();
WORD data = get_word(dataa);
{ UWORD val = data;
ULONG cmask = 0x8000;
int carry = val&cmask;
val <<= 1;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
put_word(dataa,val);
}}}}
void op_e3f9(UWORD opcode)
{
{{ CPTR dataa = nextilong();
WORD data = get_word(dataa);
{ UWORD val = data;
ULONG cmask = 0x8000;
int carry = val&cmask;
val <<= 1;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
put_word(dataa,val);
}}}}
void op_e400(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
}
regs.n = sign != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e408(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e410(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e418(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&1; val = (ULONG)val >> 1;
if(carry) val |= cmask;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e440(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x8000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
}
regs.n = sign != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e448(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e450(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e458(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&1; val = (ULONG)val >> 1;
if(carry) val |= cmask;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e480(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80000000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
}
regs.n = sign != 0;
regs.z = val == 0;
regs.d[dstreg] = (val);
}}}}}}
void op_e488(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e490(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e498(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&1; val = (ULONG)val >> 1;
if(carry) val |= cmask;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e4d0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg];
WORD data = get_word(dataa);
{ UWORD val = data;
int carry = val&1;
ULONG cmask = 0x8000;
val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
put_word(dataa,val);
}}}}
void op_e4d8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg];
WORD data = get_word(dataa);
{ regs.a[srcreg] += 2;
{ UWORD val = data;
int carry = val&1;
ULONG cmask = 0x8000;
val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
put_word(dataa,val);
}}}}}
void op_e4e0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ regs.a[srcreg] -= 2;
{ CPTR dataa = regs.a[srcreg];
WORD data = get_word(dataa);
{ UWORD val = data;
int carry = val&1;
ULONG cmask = 0x8000;
val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
put_word(dataa,val);
}}}}}
void op_e4e8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg] + (LONG)(WORD)nextiword();
WORD data = get_word(dataa);
{ UWORD val = data;
int carry = val&1;
ULONG cmask = 0x8000;
val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
put_word(dataa,val);
}}}}
void op_e4f0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg];
UWORD datadp = nextiword();
dataa += (LONG)(BYTE)(datadp & 0xFF);
{ ULONG datadpr = datadp & 0x8000 ? regs.a[(datadp & 0x7000) >> 12] : regs.d[(datadp & 0x7000) >> 12];
if (!(datadp & 0x800)) datadpr = (LONG)(WORD)datadpr;
dataa += datadpr;
{ WORD data = get_word(dataa);
{ UWORD val = data;
int carry = val&1;
ULONG cmask = 0x8000;
val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
put_word(dataa,val);
}}}}}}
void op_e4f8(UWORD opcode)
{
{{ CPTR dataa = (LONG)(WORD)nextiword();
WORD data = get_word(dataa);
{ UWORD val = data;
int carry = val&1;
ULONG cmask = 0x8000;
val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
put_word(dataa,val);
}}}}
void op_e4f9(UWORD opcode)
{
{{ CPTR dataa = nextilong();
WORD data = get_word(dataa);
{ UWORD val = data;
int carry = val&1;
ULONG cmask = 0x8000;
val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
put_word(dataa,val);
}}}}
void op_e500(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
}
regs.n = (val&cmask) != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e508(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e510(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e518(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(carry) val |= 1;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e540(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x8000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
}
regs.n = (val&cmask) != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e548(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e550(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e558(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(carry) val |= 1;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e580(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80000000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
}
regs.n = (val&cmask) != 0;
regs.z = val == 0;
regs.d[dstreg] = (val);
}}}}}}
void op_e588(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e590(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e598(UWORD opcode)
{
ULONG srcreg = 2;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(carry) val |= 1;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e5d0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg];
WORD data = get_word(dataa);
{ UWORD val = data;
ULONG cmask = 0x8000;
int carry = val&cmask;
val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
put_word(dataa,val);
}}}}
void op_e5d8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg];
WORD data = get_word(dataa);
{ regs.a[srcreg] += 2;
{ UWORD val = data;
ULONG cmask = 0x8000;
int carry = val&cmask;
val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
put_word(dataa,val);
}}}}}
void op_e5e0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ regs.a[srcreg] -= 2;
{ CPTR dataa = regs.a[srcreg];
WORD data = get_word(dataa);
{ UWORD val = data;
ULONG cmask = 0x8000;
int carry = val&cmask;
val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
put_word(dataa,val);
}}}}}
void op_e5e8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg] + (LONG)(WORD)nextiword();
WORD data = get_word(dataa);
{ UWORD val = data;
ULONG cmask = 0x8000;
int carry = val&cmask;
val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
put_word(dataa,val);
}}}}
void op_e5f0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg];
UWORD datadp = nextiword();
dataa += (LONG)(BYTE)(datadp & 0xFF);
{ ULONG datadpr = datadp & 0x8000 ? regs.a[(datadp & 0x7000) >> 12] : regs.d[(datadp & 0x7000) >> 12];
if (!(datadp & 0x800)) datadpr = (LONG)(WORD)datadpr;
dataa += datadpr;
{ WORD data = get_word(dataa);
{ UWORD val = data;
ULONG cmask = 0x8000;
int carry = val&cmask;
val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
put_word(dataa,val);
}}}}}}
void op_e5f8(UWORD opcode)
{
{{ CPTR dataa = (LONG)(WORD)nextiword();
WORD data = get_word(dataa);
{ UWORD val = data;
ULONG cmask = 0x8000;
int carry = val&cmask;
val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
put_word(dataa,val);
}}}}
void op_e5f9(UWORD opcode)
{
{{ CPTR dataa = nextilong();
WORD data = get_word(dataa);
{ UWORD val = data;
ULONG cmask = 0x8000;
int carry = val&cmask;
val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
put_word(dataa,val);
}}}}
void op_e600(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
}
regs.n = sign != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e608(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e610(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e618(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&1; val = (ULONG)val >> 1;
if(carry) val |= cmask;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e640(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x8000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
}
regs.n = sign != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e648(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e650(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e658(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&1; val = (ULONG)val >> 1;
if(carry) val |= cmask;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e680(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80000000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
}
regs.n = sign != 0;
regs.z = val == 0;
regs.d[dstreg] = (val);
}}}}}}
void op_e688(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e690(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e698(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&1; val = (ULONG)val >> 1;
if(carry) val |= cmask;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e6d0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg];
WORD data = get_word(dataa);
{ UWORD val = data;
int carry = val&1;
ULONG cmask = 0x8000;
val >>= 1;
if(carry) val |= cmask;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
put_word(dataa,val);
}}}}
void op_e6d8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg];
WORD data = get_word(dataa);
{ regs.a[srcreg] += 2;
{ UWORD val = data;
int carry = val&1;
ULONG cmask = 0x8000;
val >>= 1;
if(carry) val |= cmask;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
put_word(dataa,val);
}}}}}
void op_e6e0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ regs.a[srcreg] -= 2;
{ CPTR dataa = regs.a[srcreg];
WORD data = get_word(dataa);
{ UWORD val = data;
int carry = val&1;
ULONG cmask = 0x8000;
val >>= 1;
if(carry) val |= cmask;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
put_word(dataa,val);
}}}}}
void op_e6e8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg] + (LONG)(WORD)nextiword();
WORD data = get_word(dataa);
{ UWORD val = data;
int carry = val&1;
ULONG cmask = 0x8000;
val >>= 1;
if(carry) val |= cmask;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
put_word(dataa,val);
}}}}
void op_e6f0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg];
UWORD datadp = nextiword();
dataa += (LONG)(BYTE)(datadp & 0xFF);
{ ULONG datadpr = datadp & 0x8000 ? regs.a[(datadp & 0x7000) >> 12] : regs.d[(datadp & 0x7000) >> 12];
if (!(datadp & 0x800)) datadpr = (LONG)(WORD)datadpr;
dataa += datadpr;
{ WORD data = get_word(dataa);
{ UWORD val = data;
int carry = val&1;
ULONG cmask = 0x8000;
val >>= 1;
if(carry) val |= cmask;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
put_word(dataa,val);
}}}}}}
void op_e6f8(UWORD opcode)
{
{{ CPTR dataa = (LONG)(WORD)nextiword();
WORD data = get_word(dataa);
{ UWORD val = data;
int carry = val&1;
ULONG cmask = 0x8000;
val >>= 1;
if(carry) val |= cmask;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
put_word(dataa,val);
}}}}
void op_e6f9(UWORD opcode)
{
{{ CPTR dataa = nextilong();
WORD data = get_word(dataa);
{ UWORD val = data;
int carry = val&1;
ULONG cmask = 0x8000;
val >>= 1;
if(carry) val |= cmask;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
put_word(dataa,val);
}}}}
void op_e700(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
}
regs.n = (val&cmask) != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e708(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e710(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e718(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(carry) val |= 1;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e740(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x8000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
}
regs.n = (val&cmask) != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e748(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e750(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e758(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(carry) val |= 1;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e780(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80000000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
}
regs.n = (val&cmask) != 0;
regs.z = val == 0;
regs.d[dstreg] = (val);
}}}}}}
void op_e788(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e790(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e798(UWORD opcode)
{
ULONG srcreg = 3;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(carry) val |= 1;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e7d0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg];
WORD data = get_word(dataa);
{ UWORD val = data;
ULONG cmask = 0x8000;
int carry = val&cmask;
val <<= 1;
if(carry) val |= 1;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
put_word(dataa,val);
}}}}
void op_e7d8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg];
WORD data = get_word(dataa);
{ regs.a[srcreg] += 2;
{ UWORD val = data;
ULONG cmask = 0x8000;
int carry = val&cmask;
val <<= 1;
if(carry) val |= 1;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
put_word(dataa,val);
}}}}}
void op_e7e0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ regs.a[srcreg] -= 2;
{ CPTR dataa = regs.a[srcreg];
WORD data = get_word(dataa);
{ UWORD val = data;
ULONG cmask = 0x8000;
int carry = val&cmask;
val <<= 1;
if(carry) val |= 1;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
put_word(dataa,val);
}}}}}
void op_e7e8(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg] + (LONG)(WORD)nextiword();
WORD data = get_word(dataa);
{ UWORD val = data;
ULONG cmask = 0x8000;
int carry = val&cmask;
val <<= 1;
if(carry) val |= 1;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
put_word(dataa,val);
}}}}
void op_e7f0(UWORD opcode)
{
ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
{{ CPTR dataa = regs.a[srcreg];
UWORD datadp = nextiword();
dataa += (LONG)(BYTE)(datadp & 0xFF);
{ ULONG datadpr = datadp & 0x8000 ? regs.a[(datadp & 0x7000) >> 12] : regs.d[(datadp & 0x7000) >> 12];
if (!(datadp & 0x800)) datadpr = (LONG)(WORD)datadpr;
dataa += datadpr;
{ WORD data = get_word(dataa);
{ UWORD val = data;
ULONG cmask = 0x8000;
int carry = val&cmask;
val <<= 1;
if(carry) val |= 1;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
put_word(dataa,val);
}}}}}}
void op_e7f8(UWORD opcode)
{
{{ CPTR dataa = (LONG)(WORD)nextiword();
WORD data = get_word(dataa);
{ UWORD val = data;
ULONG cmask = 0x8000;
int carry = val&cmask;
val <<= 1;
if(carry) val |= 1;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
put_word(dataa,val);
}}}}
void op_e7f9(UWORD opcode)
{
{{ CPTR dataa = nextilong();
WORD data = get_word(dataa);
{ UWORD val = data;
ULONG cmask = 0x8000;
int carry = val&cmask;
val <<= 1;
if(carry) val |= 1;
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
put_word(dataa,val);
}}}}
void op_e800(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
}
regs.n = sign != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e808(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e810(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e818(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&1; val = (ULONG)val >> 1;
if(carry) val |= cmask;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e840(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x8000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
}
regs.n = sign != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e848(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e850(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e858(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&1; val = (ULONG)val >> 1;
if(carry) val |= cmask;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e880(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80000000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
}
regs.n = sign != 0;
regs.z = val == 0;
regs.d[dstreg] = (val);
}}}}}}
void op_e888(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e890(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e898(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&1; val = (ULONG)val >> 1;
if(carry) val |= cmask;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e900(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
}
regs.n = (val&cmask) != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e908(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e910(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e918(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(carry) val |= 1;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_e940(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x8000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
}
regs.n = (val&cmask) != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e948(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e950(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e958(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(carry) val |= 1;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_e980(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80000000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
}
regs.n = (val&cmask) != 0;
regs.z = val == 0;
regs.d[dstreg] = (val);
}}}}}}
void op_e988(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e990(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_e998(UWORD opcode)
{
ULONG srcreg = 4;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(carry) val |= 1;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_ea00(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
}
regs.n = sign != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ea08(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ea10(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ea18(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&1; val = (ULONG)val >> 1;
if(carry) val |= cmask;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ea40(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x8000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
}
regs.n = sign != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ea48(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ea50(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ea58(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&1; val = (ULONG)val >> 1;
if(carry) val |= cmask;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ea80(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80000000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
}
regs.n = sign != 0;
regs.z = val == 0;
regs.d[dstreg] = (val);
}}}}}}
void op_ea88(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_ea90(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_ea98(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&1; val = (ULONG)val >> 1;
if(carry) val |= cmask;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_eb00(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
}
regs.n = (val&cmask) != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_eb08(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_eb10(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_eb18(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(carry) val |= 1;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_eb40(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x8000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
}
regs.n = (val&cmask) != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_eb48(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_eb50(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_eb58(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(carry) val |= 1;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_eb80(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80000000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
}
regs.n = (val&cmask) != 0;
regs.z = val == 0;
regs.d[dstreg] = (val);
}}}}}}
void op_eb88(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_eb90(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_eb98(UWORD opcode)
{
ULONG srcreg = 5;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(carry) val |= 1;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_ec00(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
}
regs.n = sign != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ec08(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ec10(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ec18(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&1; val = (ULONG)val >> 1;
if(carry) val |= cmask;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ec40(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x8000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
}
regs.n = sign != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ec48(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ec50(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ec58(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&1; val = (ULONG)val >> 1;
if(carry) val |= cmask;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ec80(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80000000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
}
regs.n = sign != 0;
regs.z = val == 0;
regs.d[dstreg] = (val);
}}}}}}
void op_ec88(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_ec90(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_ec98(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&1; val = (ULONG)val >> 1;
if(carry) val |= cmask;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_ed00(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
}
regs.n = (val&cmask) != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ed08(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ed10(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ed18(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(carry) val |= 1;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ed40(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x8000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
}
regs.n = (val&cmask) != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ed48(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ed50(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ed58(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(carry) val |= 1;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ed80(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80000000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
}
regs.n = (val&cmask) != 0;
regs.z = val == 0;
regs.d[dstreg] = (val);
}}}}}}
void op_ed88(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_ed90(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_ed98(UWORD opcode)
{
ULONG srcreg = 6;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(carry) val |= 1;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_ee00(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
}
regs.n = sign != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ee08(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ee10(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ee18(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&1; val = (ULONG)val >> 1;
if(carry) val |= cmask;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ee40(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x8000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
}
regs.n = sign != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ee48(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ee50(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ee58(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&1; val = (ULONG)val >> 1;
if(carry) val |= cmask;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ee80(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80000000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
}
regs.n = sign != 0;
regs.z = val == 0;
regs.d[dstreg] = (val);
}}}}}}
void op_ee88(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_ee90(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&1; val >>= 1;
if(regs.x) val |= cmask;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_ee98(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&1; val = (ULONG)val >> 1;
if(carry) val |= cmask;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_ef00(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
}
regs.n = (val&cmask) != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ef08(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ef10(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ef18(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ BYTE data = regs.d[dstreg];
{ UBYTE val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(carry) val |= 1;
}
regs.v = regs.c = 0;
regs.z = ((BYTE)(val)) == 0;
regs.n = ((BYTE)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
}}}}}}
void op_ef40(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x8000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
}
regs.n = (val&cmask) != 0;
regs.z = val == 0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ef48(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ef50(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ef58(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ WORD data = regs.d[dstreg];
{ UWORD val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x8000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(carry) val |= 1;
}
regs.v = regs.c = 0;
regs.z = ((WORD)(val)) == 0;
regs.n = ((WORD)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
}}}}}}
void op_ef80(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
regs.v = 0;
{ ULONG cmask = 0x80000000;
ULONG sign = cmask & val;
for(;cnt;--cnt){
regs.c=regs.x=(val&cmask)!=0; val <<= 1;
if ((val&cmask)!=sign)regs.v=1;
}
regs.n = (val&cmask) != 0;
regs.z = val == 0;
regs.d[dstreg] = (val);
}}}}}}
void op_ef88(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = regs.x = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_ef90(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(regs.x) val |= 1;
regs.x = carry != 0;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.x = regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}
void op_ef98(UWORD opcode)
{
ULONG srcreg = 7;
ULONG dstreg = (opcode & 7) >> 0;
{{ ULONG cnt = srcreg;
{ LONG data = regs.d[dstreg];
{ ULONG val = data;
cnt &= 63;
{ int carry = 0;
ULONG cmask = 0x80000000;
for(;cnt;--cnt){
carry=val&cmask; val <<= 1;
if(carry) val |= 1;
}
regs.v = regs.c = 0;
regs.z = ((LONG)(val)) == 0;
regs.n = ((LONG)(val)) < 0;
regs.c = carry!=0;
regs.d[dstreg] = (val);
}}}}}}